Matthias Clasen [Wed, 20 Sep 2017 14:02:29 +0000 (10:02 -0400)]
glyph cache: Upload glyphs incrementally
This does not work yet.
Matthias Clasen [Wed, 20 Sep 2017 14:01:58 +0000 (10:01 -0400)]
vulkan: pass the context when creating a glyph cache
Matthias Clasen [Wed, 20 Sep 2017 14:00:48 +0000 (10:00 -0400)]
vulkan: Add an upload_region api to GskVulkanImage
This will let us update larger textures incrementally.
Sadly, it does not work yet.
Matthias Clasen [Wed, 20 Sep 2017 03:59:44 +0000 (23:59 -0400)]
Add some debug output for the glyph cache
Print out some statistics and dump the glyph caches to a png,
for now.
Matthias Clasen [Wed, 20 Sep 2017 03:32:07 +0000 (23:32 -0400)]
Make the glyph cache grow as needed
Make it possible to have more than one texture in the
glyph cache, and create new ones when we run out of space
in the existing ones.
Matthias Clasen [Tue, 19 Sep 2017 23:32:04 +0000 (19:32 -0400)]
vulkan: Move glyph cache to a separate file
Otherwise things will get too messy.
Matthias Clasen [Tue, 19 Sep 2017 22:53:32 +0000 (18:53 -0400)]
vulkan: Better glyph cache api
Move the glyph caching api to something that can support using
multiple textures. We now split the text render ops into multiple
ops for different textures, and make each op render just a substring
of the text node's glyph string.
Daniel Boles [Wed, 20 Sep 2017 22:53:54 +0000 (23:53 +0100)]
ToolItem: Fix nullable annotation put on wrong arg
D’oh
Daniel Boles [Tue, 5 Sep 2017 14:44:00 +0000 (15:44 +0100)]
gdkseatdefault: Grab touch events where applicable
gdk_seat_default_grab() grabs POINTER_EVENTS if the capability is
GDK_SEAT_CAPABILITY_ALL_POINTING. But that enumerator is a union that
includes GDK_SEAT_CAPABILITY_TOUCH, but we never grabbed TOUCH_EVENTS,
an unused macro that was presumably created with this purpose in mind.
So, check which of the ALL_POINTING capabilities we have, and set the
right mask of POINTER_EVENTS and/or TOUCH_EVENTS as required.
As part of this, explicitly let TABLET_STYLUS take over pointer events,
as this is the intended behaviour and was the effective result before.
This should fix touch events being lost in migrating from Device.grab()
to Seat.grab(GDK_SEAT_CAPABILITY_ALL_POINTING), as found by Inkscape.
https://bugzilla.gnome.org/show_bug.cgi?id=781757
Daniel Boles [Wed, 20 Sep 2017 16:34:43 +0000 (17:34 +0100)]
Overlay: Document style classes added per position
Piotr Drąg [Tue, 19 Sep 2017 17:49:39 +0000 (19:49 +0200)]
Update POTFILES.in
Carlos Garnacho [Tue, 19 Sep 2017 16:18:07 +0000 (18:18 +0200)]
gtkmain: Ensure to emit real GDK_LEAVE_NOTIFY events.
If we got a GDK_LEAVE_NOTIFY event from GDK, we would reset the
GtkPointerFocus, but the event would be silently consumed.
Carlos Garnacho [Tue, 19 Sep 2017 16:14:53 +0000 (18:14 +0200)]
gdk/x11: Implement GDK_CROSSING_TOUCH_BEGIN/END/DEVICE_CHANGE events
The behavior where a touchpoint takes over the pointer position is
really backend dependent. Since this went away from the generic code,
implement it here.
Carlos Garnacho [Fri, 15 Sep 2017 17:50:01 +0000 (19:50 +0200)]
gdk: Remove remainings of fake crossing event delivery across touch
This was by all lights broken, and is basically an implementation detail
of the X11 backend since the pointer emulating touch just steals the pointer
cursor, so should be reimplemented there.
Carlos Garnacho [Fri, 15 Sep 2017 17:39:18 +0000 (19:39 +0200)]
gdk: Coalesce 2 GdkWindow fields in GdkPointerWindowInfo struct
One used to point to the toplevel and the other to the client-side window
that the pointer pointed to. The latter was made to be like the former in
most places, so put those together, and fix the remaining cases where the
variable might not end up with a toplevel/native window.
Carlos Garnacho [Fri, 15 Sep 2017 17:23:14 +0000 (19:23 +0200)]
gdk: Remove unused variable
It was supporting API that has been removed.
Carlos Garnacho [Fri, 15 Sep 2017 17:12:10 +0000 (19:12 +0200)]
gdk: Remove implicit touch grab accounting
This is not necessary now that there's no client-side windows to track.
The only removed piece that could make sense is emission of grab broken
events, but it's already an stretch since the semantics of those with
multi-touchpoint is unclear.
Anyhow, This should be fixed at the GTK level, while we let GDK deal with
seat/device level grabs.
Carlos Garnacho [Fri, 15 Sep 2017 16:58:50 +0000 (18:58 +0200)]
gdk: Remove motion hints
Motion hints are now literally a thing of the past. Everything should be
using the full motion event stream.
Carlos Garnacho [Fri, 15 Sep 2017 16:31:18 +0000 (18:31 +0200)]
gdk: Drop generation of synthesized crossing events on grabs
GDK just needs to care about toplevels nowadays, which means these events
are already delivered from the windowing. We don't need to generate
intra-window crossing events ourselves.
Carlos Garnacho [Fri, 15 Sep 2017 15:34:06 +0000 (17:34 +0200)]
gtk: Remove 2BUTTON and 3BUTTON events and event types
Those should be interpreted by widget-local gestures, not guessed at a
high level with no notions of the specific context. Users will want
GtkGestureMultiPress to replace these events.
Carlos Garnacho [Fri, 15 Sep 2017 15:41:49 +0000 (17:41 +0200)]
gdk: Remove array of event masks
This has been unused since all events are just forwarded instead of
checking client-side windows evmasks.
Carlos Garnacho [Fri, 15 Sep 2017 14:48:13 +0000 (16:48 +0200)]
gtklistbox: Remove enter/leave/motion event handlers
Those worked similarly to those in GtkFlowBox, but would additionally
handle "active" state for child rows. Simplify this to just enabling/
disabling active state on gesture press/release, we don't get the
nice state updates when hovering around with a mouse button pressed,
but the rationale from flowbox applies here, and makes a nice cleanup.
Carlos Garnacho [Fri, 15 Sep 2017 14:32:35 +0000 (16:32 +0200)]
gtkcolorswatch: Remove enter/leave event handlers
Those just maintained prelight state, which is already managed internally.
Carlos Garnacho [Fri, 15 Sep 2017 14:28:37 +0000 (16:28 +0200)]
gtkbutton: Remove enter/leave event handlers
They just maintain priv->in_button and widget state up-to-date, this
basically matters during user interaction, and is already maintained
in the gesture ::update handler. This seems to be sufficient.
Carlos Garnacho [Fri, 15 Sep 2017 14:16:24 +0000 (16:16 +0200)]
gtkflowbox: Drop crossing/motion event handlers
Those basically controlled priv->active_child_active, which would
1) trigger a redraw when the pointer enters/leaves it, and 2) ensure
that press/release happen on the same child for it to be activated.
The former is not necessary, and the latter can be simplified by
just checking again the child on the coordinates given by the
::release gesture handler. This makes all enter/leave/motion_notify
event handlers unneeded.
Carlos Garnacho [Fri, 15 Sep 2017 13:05:40 +0000 (15:05 +0200)]
gtkspinbutton: Remove motion notify handler
It does nothing nowadays.
Carlos Garnacho [Fri, 15 Sep 2017 12:55:19 +0000 (14:55 +0200)]
gtkcalendar: Use scroll event controller
Carlos Garnacho [Fri, 15 Sep 2017 11:55:23 +0000 (13:55 +0200)]
gtkscrolledwindow: Use scroll event controller
All kinetic scrolling initial velocity calculations are now
taken from the scroll controller. The handling of timeouts
to snap back when overshooting has been also made to just
apply on devices that can't emit ::scroll-begin/end.
Carlos Garnacho [Fri, 15 Sep 2017 11:54:38 +0000 (13:54 +0200)]
gtkspinbutton: Use scroll event controller
Carlos Garnacho [Fri, 15 Sep 2017 11:54:20 +0000 (13:54 +0200)]
gtkscalebutton: Use scroll event controller
Carlos Garnacho [Fri, 15 Sep 2017 11:53:59 +0000 (13:53 +0200)]
gtkrange: Use scroll event controller
Carlos Garnacho [Fri, 15 Sep 2017 11:53:43 +0000 (13:53 +0200)]
gtkpathbar: Use scroll event controller
Carlos Garnacho [Fri, 15 Sep 2017 11:53:27 +0000 (13:53 +0200)]
gtkmenu: Use scroll event controller
Carlos Garnacho [Fri, 15 Sep 2017 11:52:55 +0000 (13:52 +0200)]
gtkcombobox: Use scroll event controller
Carlos Garnacho [Fri, 15 Sep 2017 11:22:57 +0000 (13:22 +0200)]
gtk: Add GtkEventControllerScroll
This is a GtkEventController implementation to handle mouse
scrolling. It handles both smooth and discrete events and
offers a way for callers to tell their preference too, so
smooth events shall be accumulated and coalesced on request.
On capable devices, it can also emit ::scroll-begin and
::scroll-end enclosing all ::scroll events for a scroll
operation.
It also has builtin kinetic scrolling capabilities, reporting
the initial velocity for both axes after ::scroll-end if
requested.
Carlos Garnacho [Fri, 15 Sep 2017 11:21:25 +0000 (13:21 +0200)]
gdk/x11: Avoid delivering emulated scroll events
We now just propagate the real event, and let the caller deal
with smooth vs discrete.
Carlos Garnacho [Fri, 15 Sep 2017 11:20:16 +0000 (13:20 +0200)]
gdk/wayland: Drop emission of emulated scroll events
A wl_pointer.frame can now only result on one scroll event
being emitted.
Carlos Garnacho [Mon, 29 May 2017 12:55:37 +0000 (14:55 +0200)]
gtk: Change gtk_propagate_event() to propagate both ways.
This change is made for consistency, it doesn't make sense to expose
one-way propagation, as it can only break expectations from GTK+. This
function might be made entirely private in the future, but it still
makes sense to do this in one go for our internal usecases.
Carlos Garnacho [Mon, 29 May 2017 10:16:21 +0000 (12:16 +0200)]
gdk/x11: Drop motion/button events emulated from touch
We now always listen to touch events. Just avoid delivering both
types of events.
Carlos Garnacho [Mon, 29 May 2017 10:08:19 +0000 (12:08 +0200)]
eventcontroller: Drop event_mask API
This is unchecked, we can remove it entirely as well.
Carlos Garnacho [Mon, 29 May 2017 10:02:53 +0000 (12:02 +0200)]
gtkwidget: Drop pointer emulation out of touch events
Users of touch events are required to either use a GtkGesture, or handle
touch events themselves.
Carlos Garnacho [Fri, 26 May 2017 16:55:30 +0000 (18:55 +0200)]
gtk: Run GtkWidgetClass event signals inside a GtkEventController
This will allow further cleanups and optimizations in capture/target/bubble
event delivery. For simplicity, ATM every widget will receive its own
GtkEventControllerLegacy, it could be desirable to add finer control over
this in the future, so widgets that fully use event controllers for input
management can do away without this legacy piece.
Matthias Clasen [Mon, 28 Aug 2017 23:11:45 +0000 (19:11 -0400)]
testsuite: Use GdkEvent API
Matthias Clasen [Mon, 28 Aug 2017 23:11:14 +0000 (19:11 -0400)]
tests: Use GdkEvent API
Matthias Clasen [Mon, 28 Aug 2017 23:05:31 +0000 (19:05 -0400)]
examples: Use GdkEvent API
Matthias Clasen [Mon, 28 Aug 2017 23:05:11 +0000 (19:05 -0400)]
widget: Give up on GdkEvent api for now
Matthias Clasen [Mon, 28 Aug 2017 23:04:34 +0000 (19:04 -0400)]
treeview: Give up on GdkEvent api for now
There's multiple places where events are manually generated
here, this needs more thought.
Matthias Clasen [Mon, 28 Aug 2017 22:53:40 +0000 (18:53 -0400)]
entry accessible: Give up on GdkEvent api for now
Just include gdkeventsprivate.h here for now. This may be
resolved by just dropping icon support from GtkEntry down
the road.
Matthias Clasen [Mon, 28 Aug 2017 22:52:48 +0000 (18:52 -0400)]
a11y: Stop listening for configure events
This needs to be done differently.
Matthias Clasen [Mon, 28 Aug 2017 22:47:35 +0000 (18:47 -0400)]
Add some more GdkEvent getters
Matthias Clasen [Mon, 28 Aug 2017 22:47:03 +0000 (18:47 -0400)]
gtk-demo: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 18:29:52 +0000 (14:29 -0400)]
treev view column: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 18:29:31 +0000 (14:29 -0400)]
clipboard: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 18:26:30 +0000 (14:26 -0400)]
a11y: Use GdkEvent API in some places
More work needed.
Matthias Clasen [Sat, 26 Aug 2017 16:23:02 +0000 (12:23 -0400)]
tooltip: Use GdkEvent API
And at the same time, reshuffle things slightly to avoid
creating synthetic events.
Matthias Clasen [Sat, 26 Aug 2017 16:22:49 +0000 (12:22 -0400)]
text view: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 16:22:35 +0000 (12:22 -0400)]
text handle: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:58:39 +0000 (10:58 -0400)]
selection: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:58:23 +0000 (10:58 -0400)]
search bar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:58:08 +0000 (10:58 -0400)]
scrolled window: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:57:52 +0000 (10:57 -0400)]
places view: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:57:37 +0000 (10:57 -0400)]
place sidebar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:57:15 +0000 (10:57 -0400)]
path bar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:56:25 +0000 (10:56 -0400)]
pad controller: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:56:08 +0000 (10:56 -0400)]
menu shell: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:55:52 +0000 (10:55 -0400)]
menu item: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:55:35 +0000 (10:55 -0400)]
im context simple: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:55:16 +0000 (10:55 -0400)]
header bar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:53:33 +0000 (10:53 -0400)]
gesture zoom: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:53:01 +0000 (10:53 -0400)]
gesture swipe: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:52:45 +0000 (10:52 -0400)]
gesture single: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:52:25 +0000 (10:52 -0400)]
gesture rotate: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:52:06 +0000 (10:52 -0400)]
gesture drag: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:51:49 +0000 (10:51 -0400)]
gesture: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:50:50 +0000 (10:50 -0400)]
window accessible: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:50:34 +0000 (10:50 -0400)]
widget accessible: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:50:15 +0000 (10:50 -0400)]
Add more GdkEvents API
Matthias Clasen [Sat, 26 Aug 2017 02:55:38 +0000 (22:55 -0400)]
xim: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:54:25 +0000 (22:54 -0400)]
settings: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:58 +0000 (22:53 -0400)]
gesture rotate: Partially convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:42 +0000 (22:53 -0400)]
gesture: Partially convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:19 +0000 (22:53 -0400)]
flowbox: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:04 +0000 (22:53 -0400)]
file chooser widget: Covert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:52:48 +0000 (22:52 -0400)]
expander: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:52:27 +0000 (22:52 -0400)]
entry: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:52:09 +0000 (22:52 -0400)]
dnd: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:51:37 +0000 (22:51 -0400)]
cell renderer accel: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:51:18 +0000 (22:51 -0400)]
bindings: Convert to use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:50:52 +0000 (22:50 -0400)]
Add more getters for event fields
Carlos Garnacho [Sat, 5 Aug 2017 13:34:39 +0000 (15:34 +0200)]
gdk: Make GdkEvent structs/union opaque
All users are forced to deal with events as opaque pointers, only
using API to access the info.
Carlos Garnacho [Fri, 25 Aug 2017 14:58:33 +0000 (16:58 +0200)]
bindings: Partially update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:58:20 +0000 (16:58 +0200)]
a11y: Partially update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:57:26 +0000 (16:57 +0200)]
inspector: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:56:53 +0000 (16:56 +0200)]
gtkwindow: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:56:15 +0000 (16:56 +0200)]
treeview: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:56:05 +0000 (16:56 +0200)]
tooltip: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:55:47 +0000 (16:55 +0200)]
textview: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:55:39 +0000 (16:55 +0200)]
texthandle: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:55:22 +0000 (16:55 +0200)]
spinbutton: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:54:34 +0000 (16:54 +0200)]
scrolledwindow: Update to using GdkEvent API